// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLName_ptr;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.ast.expr.SQLVariantRefExpr_ptr;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../SQLStatementImpl.h"

class SQLCallStatement : virtual public SQLStatementImpl
{
public:
  BOOL_ptr brace;

  SQLVariantRefExpr_ptr outParameter;

  SQLName_ptr procedureName;

  SQLExpr_list_ptr parameters;

  SQLCallStatement();

  SQLCallStatement(DbType_ptr dbType);
  SHAREDOBJECT(SQLCallStatement);

  SQLVariantRefExpr_ptr getOutParameter();

  void setOutParameter(SQLVariantRefExpr_ptr outParameter);

  SQLName_ptr getProcedureName();

  void setProcedureName(SQLName_ptr procedureName);

  SQLExpr_list_ptr getParameters();

  BOOL_ptr isBrace();

  void setBrace(BOOL_ptr brace);

  void accept0(SQLASTVisitor_ptr visitor);

  // @Override
  SQLObject_list_ptr getChildren();
};
